package com.ty.service.impl;

import com.ty.bean.Courier;
import com.ty.dao.BaseCourierDao;
import com.ty.dao.impl.BaseCourierDaoImpl;
import com.ty.service.BaseCourierService;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author 田野
 */
public class BaseCourierServiceImpl implements BaseCourierService {

    BaseCourierDao courierDao =  new BaseCourierDaoImpl();

    /**
     * 用于查询快递员总人数(size)以及日注册量(day_reg)
     *
     * @return
     */
    @Override
    public Map<String, Integer> console() {
        List<Integer> console = courierDao.console();
        Map<String, Integer> data = null;

        if (console != null && console.size() > 0){
            data = Map.of("couriers", console.get(0), "day_reg", console.get(1));
        }
        return data;
    }

    /**
     * 用于分页查询数据库中的所有快递员信息
     *
     * @param limit      true表示开启分页查询(默认) false 表示查询所有快递员
     * @param offset     表示 SQL 语句起始索引
     * @param pageNumber 表示页查询快递员数量
     * @return List<Courier> 快递员集合
     */
    @Override
    public List<Courier> findAll(boolean limit, int offset, int pageNumber) {
        return courierDao.findAll(limit, offset, pageNumber);
    }

    /**
     * 根据快递员编号查询快递员信息
     *
     * @param id 快递员编号
     * @return Courier
     */
    @Override
    public Courier findById(int id) {
        return courierDao.findById(id);
    }

    /**
     * 根据手机号码查询快递员信息
     *
     * @param phone 手机号码
     * @return Courier
     */
    @Override
    public Courier findByPhone(String phone) {
        return courierDao.findByPhone(phone);
    }

    /**
     * 根据身份证号码查询快递员信息
     *
     * @param idCard 身份证号码
     * @return Courier
     */
    @Override
    public Courier findByIdCard(String idCard) {
        return courierDao.findByIdCard(idCard);
    }

    /**
     * 新增快递员
     *
     * @param courier
     * @return
     */
    @Override
    public boolean insert(Courier courier) {
        return courierDao.insert(courier);
    }

    /**
     * 根据id修改快递员信息
     *
     * @param id
     * @param newCourier
     * @return
     */
    @Override
    public boolean update(int id, Courier newCourier) {
        return courierDao.update(id, newCourier);
    }

    /**
     * 根据电话号码删除快递员信息
     *
     * @param id
     * @return
     */
    @Override
    public boolean delete(int id) {
        return courierDao.delete(id);
    }
}
